In order to avoid unnecessary internal data copy between different layers of a storage array, a data copy avoidance (DCA) protocol has been proposed. According to the DCA protocol, when a driver in a hierarchical structure or a host issues a data read or data write command, the request will be directly passed down to a device stack without going through any buffer area. When the data access command reaches a cache layer, the cache layer provides a corresponding buffer area (also referred to as “cache page”), and the data can be directly communicated between the access command initiator and the cache, without additional data copy. The DCA protocol helps to enhance the efficiency of data access.
However, current DCA solutions are not only suitable for a single storage node, but cannot be effectively implemented across different physical storage nodes. For a storage system consisting of two or more physical storage nodes, under a particular condition, it is required to redirect data output/input (I/O) operations from one storage node to another storage node. For example, when a logical unit number (LUN) presented to the host is a virtual LUN, it might be required to redirect the I/O operations from the local storage node to another separate storage node. In the known DCA solution, with data write as an example, the data will be first transmitted to an internal buffer area of the initiating storage node, and then delivered to a mirrored cache in the destination storage node. At this point, as already known, the DCA protocol requires that the mirrored cache in the destination storage node further mirrors these data back to the mirrored cache of the initiating storage node. Therefore, in one data write operation, the data have to be transmitted twice between different storage nodes, which wastes resources and deteriorates operation efficiency. Similarly, the current DCA-based across-storage node data read is likewise restricted to the above problem.